package base

import "context"

// 各种公用的结构体模型

// ClientInstruct 客户端指令
type ClientInstruct struct {
	Code      int    `json:"code"`
	ServeTime int64  `json:"serveTime,string"`
	Body      string `json:"body"`
}

// PluginInstruct 插件指令， 和 PluginConfig 很相识，但是用途不一样，具体情况后续要考虑插件重复执行等等场景，后面再说。现在分开
type PluginInstruct struct {
	Cmd             string   `json:"cmd" yaml:"cmd"`
	Args            []string `json:"args" yaml:"args"`
	User            string   `json:"user" yaml:"user"`
	Env             []string `json:"env" yaml:"env"`
	TimeoutDuration int64    `json:"timeoutDuration" yaml:"timeoutDuration"` // 执行超时时间
}

// PluginPipeInstruct pip插件指令
type PluginPipeInstruct struct {
	Cmd       string   `json:"cmd" yaml:"cmd"`
	Args      []string `json:"args" yaml:"args"`
	User      string   `json:"user" yaml:"user"`
	Env       []string `json:"env" yaml:"env"`
	OutChan   chan string
	CloseChan chan error
	Cancel    context.Context
}

// ClientResponse 客户端响应结构体
type ClientResponse struct {
	DeviceId    int64    `json:"deviceId,string"`    // 设备ID，举手成功后由服务端返回
	ClientType  string   `json:"clientType"`         // 客户端类型
	ClientTime  int64    `json:"clientTime,string"`  // 客户端时间
	ContentCode int      `json:"contentCode"`        // 消息码
	Cmd         string   `json:"cmd" yaml:"cmd"`     // 指令
	Args        []string `json:"args" yaml:"args"`   // 参数
	ElapsedTime int64    `json:"elapsedTime,string"` // 执行耗时
	Result      string   `json:"result"`             // 执行结果
	MsgTime     int64    `json:"msgTime,string"`     // 消息的采集时间
}
